package services.common;

import java.util.List;
import java.util.Map;

import models.common.entity.t_credit_level;
import services.base.BaseService;

import common.utils.Factory;
import common.utils.ResultInfo;

import daos.common.CreditLevelDao;

/**
 * 交易信用积分service实现
 * 
 * @description
 *
 * @author ChenZhipeng
 * @createDate 2015年12月23日
 */
public class CreditLevelService extends BaseService<t_credit_level> {

	protected CreditLevelDao creditLevelDao = Factory.getDao(CreditLevelDao.class);

	protected CreditLevelService() {
		super.basedao = this.creditLevelDao;
	}

	/**
	 * 获取交易信用积分列表
	 *
	 * @author Chenzhipeng
	 * @createDate 2015年12月23日
	 */
	public List<t_credit_level> queryCreditLevels() {

		return findAll();
	}

	/**
	 * 修改交易信用积分
	 * 
	 * @param id 交易信用积分id
	 * @param name 交易信用积分名称
	 * @param imageUrl 图片URL
	 * @param imageResolution 图片分辨率
	 * @param imageSize 图片大小
	 * @param imageFormat 图片格式
	 * @return
	 * 
	 * @author Chenzhipeng
	 * @param orderNo   排序
	 * @param maxCreditScore  最小积分 
	 * @param minCreditScore  最大积分
	 * @createDate 2015年12月23日
	 */
	public ResultInfo updateCreditLevel(long id, String name, String imageUrl,
			String imageResolution, String imageSize, String imageFormat, 
			long minCreditScore, long maxCreditScore, long orderNo) {
		ResultInfo result = new ResultInfo();
		int i = creditLevelDao.updateCreditLevel(id, name, imageUrl,
				imageResolution, imageSize, imageFormat, minCreditScore, maxCreditScore, orderNo);
		if (i < 0) {
			result.code = -1;
			result.msg ="交易信用积分信息修改失败";
			
			return result;
		}
		result.code = 1;
		result.msg ="交易信用积分信息修改成功";
		
		return result;
	}

	/**
	 * 查询交易信用积分对象
	 * 
	 * @param id
	 * @return
	 * 
	 * @author Chenzhipeng
	 * @createDate 2015年12月23日
	 */
	public t_credit_level findCreditLevel(long id) {

		return findByID(id);
	}

	/**
	 * 根据信用积分计算交易信用积分
	 * 
	 * @param creditScore
	 * @return
	 * 
	 * @author Chenzhipeng
	 * @createDate 2015年12月23日
	 */
	public t_credit_level queryLevelByCreditScore(int creditScore) {

		List<t_credit_level> creditLevels = queryCreditLevels();
		t_credit_level level = new t_credit_level();
		
		/* 匹配符合用户信用积分的交易信用积分对象 */
		for (t_credit_level creditLevel : creditLevels) {
			if (creditLevel.min_credit_score <= creditScore && creditLevel.max_credit_score >= creditScore) {
				
				level = creditLevel;
			}else if (creditLevel.max_credit_score == 0 && creditLevel.min_credit_score <= creditScore) {
				
				level = creditLevel;
			}else if(creditLevel.min_credit_score == 0 && creditLevel.max_credit_score >= creditScore) {
				
				level = creditLevel;
			}
		}
		
		return level;
	}

	
	/**
	 * 保存新增
	 * @param creditLevel
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年4月19日
	 */
	public ResultInfo addCreditLevel(t_credit_level creditLevel) {
		ResultInfo result = new ResultInfo();
		
		boolean flag = creditLevelDao.save(creditLevel);
		if (!flag) {
			
			result.code = ResultInfo.ERROR_SQL;
			result.msg = "系统错误";	
			
			return result;
		} 
		
		result.code = 1;
		result.msg="交易信用积分添加成功!";
		result.obj = creditLevel;
		
		return result;
	}

	/**
	 * 删除交易信用积分   根据id删除
	 * @param creditLevelId
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年4月19日
	 */
	public boolean delCreditLevel(long creditLevelId) {
		int row = creditLevelDao.delete(creditLevelId);
		if(row<=0){
			return false;
		}
		return true;
	}

	/**
	 * 根据信用得分查询交易信用积分实体
	 * 
	 * @param credit_point
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年7月3日
	 */
	public t_credit_level findCreditLevelImageByScore(int credit_point) {
		if(credit_point < 0){
			credit_point = 0;
		}
		return creditLevelDao.findCreditLevelImageByScore(credit_point);
	}

	/**
	 * 查询交易信用积分  -app
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年7月31日
	 */
	public List<Map<String, Object>> findAllCreditLevelApp() {
		
		return creditLevelDao.findAllCreditLevelApp();
	}
	
}
